//@ts-check
// 2. 创建 webpack.config.js
const path = require('path');
const TerserPlugin = require('terser-webpack-plugin');
// const WebpackUserscript = require('webpack-userscript');

module.exports = {
  mode: 'development', // 开发模式不压缩
  entry: './src/main.ts', // 入口文件
  output: {
    filename: 'bundle.webpack_dev.js',
    library: { // 新版配置结构
      type: 'var', // 明确指定类型
      name: 'MyTampermonkeyScript', // 全局变量名
      export: 'default' // 关键：当使用ES模块时需指定导出方式
    },
    iife: true          // 关键：自动包裹IIFE
  },
  resolve: {
    extensions: ['.ts', '.js'] // 自动解析扩展名
  },
  module: {
    rules: [
      {
        test: /\.ts$/,
        use: [
          {
            loader: 'ts-loader',
            options: {
              transpileOnly: true
            }
          }
        ],
        exclude: /node_modules/
      }
    ]
  },
  plugins: [
    // new WebpackUserscript({
    //   headers: {
    //     name: 'My Script',
    //     version: '1.0.0',
    //     match: 'https://example.com/*',
    //     grant: 'none'
    //   }
    // })
  ],
  optimization: {
    minimizer: [new TerserPlugin()] // 生产模式自动压缩
  },
  watch: true, // 核心：启用监视模式
  watchOptions: {
    aggregateTimeout: 500, // 防抖延迟
    ignored: /node_modules/, // 忽略目录
    followSymlinks: true, // 解决符号链接问题
    // poll: 1000 // 轮询检测（适用于虚拟机环境）
  },
  stats: {
    colors: true,
    modules: false,
    children: false,
    chunks: false,
    chunkModules: false
  }
};